package com.hllxd.hism.star.basic.service.exception;

/**
 * 错误码
 * <p>
 *  总共4位
 *  第一位：功能分类；后三位：错误码
 *  第一位：
 *      0：公用
 *      1：订单
 * </p>
 * @author liuxiongbo
 * @date 2020/12/18 17:35
 **/
public enum BasicErrorCode {
    /**
     * =====================================================================
     *                              0:公用
     * =====================================================================
     */
    ERROR_MISSING_PARAMETER("0001", "缺少参数：{0}", false, false),
    ERROR_ARGUMENTS("0002", "参数异常", false, false),
    ERROR_ARGUMENTS_REASON("0003", "参数异常:{0}", false, false),
    ERROR_URL("0004", "URL错误", false, false),
    /**
     * =====================================================================
     *                              1:订单
     * =====================================================================
     */
    ERROR_PV("1001", "接口号错误", false, false),
    ERROR_LOGIN_INFO("1002", "登录信息错误", false, false),
    ERROR_LOGIN_RESULT("1003", "商城登录错误:{0}", false, false),
    ERROR_LACK_TOKEN("1004", "缺少token和供应商Id信息", false, false),
    ERROR_QUERY_ORDER_LIST("1005", "查询订单列表失败：{0}", false, false),
    ERROR_AGENT_NAME("1006", "根据采购商名称没有查询到代理商", false, false),
    ERROR_PRODUCT_CODE("1007", "商城的productCode格式不对", false, false),
    ERROR_PRODUCT_LIST_EMPTY("1008", "订单产品为空", false, false),
    ERROR_PAYMENT_WAY("1009", "支付方式无法匹配", false, false),
    ERROR_PRODUCT_INFO("1010", "根据产品ID无法找到对应的产品", false, false),

    ERROR_MUST_BUNDLING_GOODS("1011", "订单{0}的{1}不是组合商品，所有商品必须是组合商品", false, false),
    ERROR_NO_GOODS_DETAIL("1012", "订单{0}的{1}没有组合商品明细", false, false),
    ERROR_AMOUNT_PAID("1013", "订单{0}未结清，叫采购方先把钱给了", false, false),
    ERROR_EMP_INFO_NOT_EXIST("1014", "根据人员ID没有找到相应的人员信息", false, false),
    ERROR_PRODUCT_ATTRIBUTE_TYPE_SURPLUS("1015", "合同产品属性类型除了软件和硬件外还有别的属性", false, false)
    ;
    BasicErrorCode(String code, String message, boolean success, boolean retriable) {
        this.code = code;
        this.message = message;
        this.success = success;
        this.retriable = retriable;
    }

    private String code;
    private String message;
    private boolean success;
    private boolean retriable;


    public String getCode() {
        return this.code;
    }


    public String getMessage() {
        return this.message;
    }


    public boolean isRetriable() {
        return this.retriable;
    }


    public boolean isSuccess() {
        return this.success;
    }
}
